package com.cloudfun.campusshare.service;

import com.cloudfun.campusshare.common.model.vo.*;
import com.cloudfun.campusshare.common.response.PageResult;
import io.swagger.annotations.ApiParam;
import org.springframework.data.domain.Pageable;
import org.springframework.web.bind.annotation.RequestParam;

import java.util.List;
import java.util.Set;

/**
 * @author : zhangyongjie
 * @version : 1.0
 * @createTime : 2020/6/2 14:06
 * @description :
 */
public interface CashAdvanceService {
    /**
     * 获取历史提现总额以及可提现金额
     *
     * @return
     */
    CashAdvanceMainDataVO getGeneralData();

    /**
     * 发起提现
     */
    void launchCashAdvance();

    /**
     * 查询提现列表
     * @param pageable
     * @param keyword
     * @param status
     * @param startTime
     * @param endTime
     * @return
     */
    PageResult queryCashAdvanceList(Pageable pageable, String keyword,
                                    Set<Integer> status,
                                    String startTime,
                                    String endTime);

    /**
     * 提现详情
     * @param cashAdvanceId
     * @return
     */
    CashAdvanceDetailVO queryCashAdvanceDetail(String cashAdvanceId);


    /**
     * 前端查询单日结算列表（分页）
     * @param pageable
     * @param cashAdvanceId
     * @return
     */
    PageResult getDailyBalanceData(Pageable pageable,String cashAdvanceId);

    /**
     * 获取单日结算列表
     * @param cashAdvanceId
     * @return
     */
    List<DailyBalanceListVO> getDailyBalanceDataList(String cashAdvanceId);

    /**
     * 确认打款账户
     * @return
     */
    AccountConfirmVO confirmAccount();

    /**
     * 分组状态查询
     *
     * @return
     */
    List<CashAdvanceCountVO> countGroupByStatus();

    /**
     * 审核
     * @param cashAdvanceHandleVO
     */
    void handleCashAdvanceRequest(CashAdvanceHandleVO cashAdvanceHandleVO);

    /**
     * 导出审核列表
     * @param ids
     * @param keyword
     * @param status
     * @param startTime
     * @param endTime
     * @param all
     * @return
     */
    List<CashAdvanceListExportVO> exportCashAdvanceList( Set<String> ids,
                                                       String keyword,
                                                         Set<Integer> status,
                                                        String startTime,
                                                        String endTime,
                                                        Boolean all);

    /**
     * 导出审核详情
     * @param cashAdvanceId
     * @return
     */
    CashAdvanceDetailExportVO exportCashAdvanceDetail(String cashAdvanceId);
}
